package FutSal.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;

import FutSal.excepcion.DAOExcepcion;
import FutSal.modelo.Cancha;
import FutSal.util.ConexionBD;

public class RolCancha extends BaseDAO{

	public void insertarCancha(Cancha vo) throws DAOExcepcion {
		System.out.println("RolDAO: insertar(Cancha vo)");
		String query = "INSERT INTO cancha(Caracteristicas,DiaAtencion,Tarifa,Promocion,local_idlocal,Disponibilidad) VALUES (?,?,?,?,?,?)";
		Connection con = null;
		PreparedStatement stmt = null;
		try {
			con = ConexionBD.obtenerConexion();
			stmt = con.prepareStatement(query);
			stmt.setString(1, vo.getCaracteristica());
			stmt.setString(2, vo.getDias());
			stmt.setString(3, vo.getTarifa());
			stmt.setString(4, vo.getPromocion());
			stmt.setInt(5, vo.getIdLocal());
			stmt.setInt(6, vo.getDisponibilidad());
			int i = stmt.executeUpdate();
			if (i != 1) {
				throw new SQLException("No se pudo insertar");
			}
		} catch (SQLException e) {
			System.err.println(e.getMessage());
			throw new DAOExcepcion(e.getMessage());
		} finally {
			this.cerrarStatement(stmt);
			this.cerrarConexion(con);
		}
	}
	
	public Collection<Cancha> listar() throws DAOExcepcion {
		System.out.println("RolDAO: listar()");
		Collection<Cancha> c = new ArrayList<Cancha>();
		Connection con = null;
		PreparedStatement stmt = null;
		ResultSet rs = null;
		try {
			con = FutSal.util.ConexionBD.obtenerConexion();
			String query = "SELECT Caracteristicas,DiaAtencion,Tarifa,Promocion from Cancha";
			stmt = con.prepareStatement(query);
			rs = stmt.executeQuery();
			while (rs.next()) {
				Cancha vo = new Cancha();
				vo.setIdLocal(rs.findColumn("idLocal"));
				c.add(vo);
			}
		} catch (SQLException e) {
			System.err.println(e.getMessage());
			throw new DAOExcepcion(e.getMessage());
		} finally {
			this.cerrarStatement(stmt);
			this.cerrarConexion(con);
		}
		return c;
	}
	
	
	//////////////////////////////////////////////////////////////////////////////////////
	 /*
     *listado de todas las cachas registradas
     */
	
	public Collection<Cancha>listarCanchas() throws DAOExcepcion {
		Collection<Cancha> can = new ArrayList<Cancha>();
		Connection con = null;
		PreparedStatement stmt = null;
		ResultSet rs = null;
		try {
			con = FutSal.util.ConexionBD.obtenerConexion();
			String query = "SELECT idcancha, Caracteristicas,DiaAtencion,Tarifa,Promocion,Disponibilidad from Cancha";
			stmt = con.prepareStatement(query);
			rs = stmt.executeQuery();
			while (rs.next()) {
				Cancha ecancha = new Cancha();
				ecancha.setIdLocal(Integer.parseInt(rs.getString("idcancha")));
				ecancha.setCaracteristica(rs.getString("Caracteristicas"));
				ecancha.setDias(rs.getString("DiaAtencion"));
				ecancha.setTarifa(rs.getString("Tarifa"));
				ecancha.setPromocion(rs.getString("Promocion"));
				ecancha.setDisponibilidad(Integer.parseInt(rs.getString("Disponibilidad")));
				can.add(ecancha);
			}
		} catch (SQLException e) {
			System.err.println(e.getMessage());
			throw new DAOExcepcion(e.getMessage());
		} finally {
			this.cerrarStatement(stmt);
			this.cerrarConexion(con);
		}
		return can;
		
	}
	
	 /*
     *listado de todas las canchas disponibles
     */
	public Collection<Cancha>listarCanchasDisponibles(int local ,String diasAtencion , int disponibilidad ) throws DAOExcepcion {
		Collection<Cancha> can = new ArrayList<Cancha>();
		Connection con = null;
		PreparedStatement stmt = null;
		ResultSet rs = null;
		try {
			con = FutSal.util.ConexionBD.obtenerConexion();
			String query = "SELECT * FROM cancha WHERE local_idlocal= ? AND DiaAtencion LIKE? AND Disponibilidad=?";
			stmt = con.prepareStatement(query);
			stmt.setInt(1, local);
			stmt.setString(2, "%" + diasAtencion + "%");
			stmt.setInt(3, disponibilidad);
			rs = stmt.executeQuery();
			while (rs.next()) {
				Cancha ecancha = new Cancha();
				ecancha.setIdLocal(Integer.parseInt(rs.getString("idcancha")));
				ecancha.setCaracteristica(rs.getString("Caracteristicas"));
				ecancha.setDias(rs.getString("DiaAtencion"));
				ecancha.setTarifa(rs.getString("Tarifa"));
				ecancha.setPromocion(rs.getString("Promocion"));
				ecancha.setDisponibilidad(Integer.parseInt(rs.getString("Disponibilidad")));
				can.add(ecancha);
			}
		} catch (SQLException e) {
			System.err.println(e.getMessage());
			throw new DAOExcepcion(e.getMessage());
		} finally {
			this.cerrarStatement(stmt);
			this.cerrarConexion(con);
		}
		return can;
	}
	
	
}


